1. Technical Field
The present invention relates to the synchronization between storage devices and non-volatile memory. More specifically, it relates to maintaining write cache and parity update footprint coherency in a multiple storage adaptor configuration for storage subsystems.
2. Background Information
Storage adaptors in a computer system often implement write caches to enhance performance. The write cache is typically non-volatile (e.g. battery backed), and is used to mask the write penalty from storage devices such as a RAID (redundant array of independent disks). A write cache can also improve the performance of a storage adaptor by coalescing multiple host operations placed in the write cache into a single destage operation which is then processed by the RAID layers or disk devices. However, there is a problem with current write cache implementations in that they indicate to the system that the data has been written to disks while in fact the data is still in the non-volatile memory of the adaptor. Therefore, if the single adaptor fails and loses the data in its write cache before it is actually written to the disks, the system will be corrupted.
Storage adaptors also use non-volatile memory to store “parity update footprints”. Parity update footprints track parity stripes or portions of parity stripes for data storage, which may potentially be out of synchronization with the actual data. For example, data and parity are temporarily placed out of synchronization each time new data is written to a single disk in a RAID array. If the adaptor fails and loses the parity update footprints, it is possible that data and parity will be left out of synchronization, and the system will then be corrupted if later the parity is used to recreate data.
Because a single storage adaptor contains many single points of failure, it is common to utilize a multiple storage adaptor configuration in which two or more adaptors are combined to eliminate single points of failures. The multiple storage adaptor configuration can be used within a storage subsystem, within the same storage system, or between different storage systems. In such a configuration, the write cache data and parity update footprints can be copied (i.e. mirrored) from one adaptor into one or more other adaptors' non-volatile memory. Therefore, if any one adaptor fails, other adaptors will have the most current copy of cache data and parity update footprints. Each adaptor in the configuration typically has connectivity to the same set of disk drives.